In some packet communication networks, adaptive routing is used by switching elements to choose the best path over which to send the packets in a given flow to their destination. (The term “switching elements” is used herein to refer network elements having multiple interfaces to the network, such as network ports, through which packets are received and transmitted, and logic for directing each received packet from its ingress to its appropriate egress interface. Switches, bridges and routers are some examples of such switching elements. A “flow” is a sequence of packets transmitted through the network from a particular source to a particular destination.) One of the objects of adaptive routing is congestion avoidance, meaning that when congestion is detected in the path of a given flow, the switching element routes the flow over a different path to the same destination.
U.S. Pat. No. 9,014,006, whose disclosure is incorporated herein by reference, describes a communication network in which each flow travels a certain route that traverses multiple switches and links. When a switch along the route detects an event that compromises its ability to forward the flow over the next link, such an event is referred to as an adaptive routing (AR) event, and may comprise, for example, link-fault, congestion or head-of-line time-out. Upon detecting an AR event, the detecting switch generates a packet referred to as an AR Notification (ARN), and sends the ARN backwards along the route. The ARN typically indicates the AR event to the preceding switches on the route of the flow, and requests that the preceding switches modify the route so as not to traverse the detecting switch.
When a preceding switch receives the ARN, it typically checks whether it is in a position to modify the route, and whether the flow in question is permitted to undergo AR. If so, the switch consumes the ARN and modifies the route. Otherwise, the switch forwards the ARN to the previous switch along the route. Typically, only one of the preceding switches should modify the route and consume the ARN, in order to avoid unnecessary blocking of ports.
U.S. Patent Application Publication 2015/0163144 describes a forwarding element that detects elephant flows by statistics or measurements relating to a data flow. An elephant flow represents a long-lived flow or a continuous traffic flow that is typically associated with high-volume connection. In distinction from an elephant flow, a mouse flow represents a short-lived flow. Mice are often associated with bursty, latency-sensitive applications, whereas elephants tend to be associated with large data transfers in which throughput is far more important than latency. The forwarding element marks each packet associated with a detected elephant flow in some manner to differentiate it from a packet associated with a mouse flow. Alternatively, the forwarding element breaks elephant flows into a number of mouse flows by sending packets associated with the detected elephant flow along different paths.